package com.hb.unic.api.audit.service;

import com.hb.unic.core.base.PageResult;
import com.hb.unic.core.base.Result;
import com.hb.unic.model.dobj.AuditLogDO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Set;

/**
 * 审核日志表服务层
 *
 * @version v0.1, 2023-09-02 00:13:43, create by huangbiao.
 */
@RestController
@RequestMapping("/auditLog")
public interface IAuditLogService {

    /**
     * 插入
     *
     * @param auditLog 插入的实体对象
     * @return 影响的行数
     */
    @PostMapping("/insert")
    Result<Integer> insert(@RequestBody AuditLogDO auditLog);

    /**
     * 批量插入
     *
     * @param auditLogList 插入的实体对象列表
     * @return 影响的行数
     */
    @PostMapping("/insertBatch")
    Result<Integer> insertBatch(@RequestBody List<AuditLogDO> auditLogList);

    /**
     * 根据主键更新
     *
     * @param auditLog 更新的实体对象
     * @return 影响的行数
     */
    @PostMapping("/updateById")
    Result<Integer> updateById(@RequestBody AuditLogDO auditLog);

    /**
     * 根据主键删除
     *
     * @param id 主键
     * @return 影响的行数
     */
    @GetMapping("/deleteById")
    Result<Integer> deleteById(@RequestParam("id") Long id);

    /**
     * 根据主键集合批量删除
     *
     * @param ids 主键集合
     * @return 影响的行数
     */
    @PostMapping("/deleteByIds")
    Result<Integer> deleteByIds(@RequestBody Set<Long> ids);

    /**
     * 根据主键查询
     *
     * @param id 主键
     * @return 结果
     */
    @GetMapping("/selectById")
    Result<AuditLogDO> selectById(@RequestParam("id") Long id);

    /**
     * 根据主键集合批量查询
     *
     * @param ids 主键集合
     * @return 结果列表
     */
    @PostMapping("/selectByIds")
    Result<List<AuditLogDO>> selectByIds(@RequestBody Set<Long> ids);

    /**
     * 根据条件查询
     *
     * @param auditLog 查询条件
     * @return 结果列表
     */
    @PostMapping("/selectList")
    Result<List<AuditLogDO>> selectList(@RequestBody AuditLogDO auditLog);

    /**
     * 分页条件查询
     *
     * @param auditLog 查询条件
     * @param pageNum  当前页
     * @param pageSize 每页条数
     * @return 结果列表
     */
    @PostMapping("/selectPages")
    Result<PageResult<AuditLogDO>> selectPages(@RequestBody AuditLogDO auditLog, @RequestParam("pageNum") Integer pageNum, @RequestParam("pageSize") Integer pageSize);
}